package es.ucm.fdi.isbc.marcado.vista.marcar;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SpringLayout;

import es.ucm.fdi.isbc.marcado.Control;
import es.ucm.fdi.isbc.marcado.vista.SpringUtilities;

public class PanelOpciones extends JPanel {

	private static final long serialVersionUID = 1L;
	private JComboBox comboIndividuos ;
	private JComboBox comboPropiedades;

	public static final String escena = "Foto";
	public static final String elementos ="ElementosDe";
	public static final String actores ="Actor";


	public PanelOpciones() {
		super();
		init();
	}
	
	private void init() {
		setLayout(new SpringLayout());
		
		JLabel label = new JLabel("Opciones de marcado: ");
		
		comboIndividuos = new JComboBox();
		initComboIndividuos();
		
		comboPropiedades = new JComboBox();
		initComboPropiedades();
		comboPropiedades.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				ArrayList<String> indiv = Control.getIndividuos((String) comboPropiedades.getSelectedItem());
				comboIndividuos.removeAllItems();
				for (Iterator<String> it = indiv.iterator(); it.hasNext();){
					comboIndividuos.addItem(it.next());
				
				}
			
			}
		});
		
		
		
		JButton boton = new JButton("Marcar imagen");
		boton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				if (Control.hayImagen)
					Control.marcar((String) comboPropiedades.getSelectedItem(), (String) comboIndividuos.getSelectedItem());
				else
					JOptionPane.showMessageDialog(null, "ERROR: Debe cargar una foto", "ERROR", JOptionPane.ERROR_MESSAGE);
			}
		});
		
		add(label);
		add(comboPropiedades);
		add(comboIndividuos);
		add(boton);
		
		SpringUtilities.makeGrid(this, 1, 4, 5, 5, 5, 5); //filas,cols,X,Y,padX,padY
	}

	private void initComboPropiedades() {
		//ArrayList<String> props = Control.getPropiedades();
		comboPropiedades.addItem(escena);
		comboPropiedades.addItem(elementos);
		comboPropiedades.addItem(actores);
		//for (Iterator<String> it = props.iterator(); it.hasNext();)
			//comboPropiedades.addItem(it.next());
		comboPropiedades.setSelectedIndex(0);
	}

	private void initComboIndividuos() {
		ArrayList<String> props = Control.getClasesOf(escena);
		for (Iterator<String> it = props.iterator(); it.hasNext();)
			comboIndividuos.addItem(it.next());
		
	}

}
